<?php


/**
 * Контроллер, который в зависимости от того, залогинен ли администратор,
 * показывает либо админку либо кукиш.
 *
 */
class Backend_Controller_Auth extends Kernel_Controller_Tokened {

    /**
     * Запускает фильтр.
     *
     */
    public function process() {
        if (Application::getMode() instanceof Kernel_Mode_Html) {
            Application::getResponse()
                ->assign('SITE_ROOT', '../')
                ->setFrameTemplate('backend/_frame/anonymous.tpl');
        }
        parent::process();
    }

    /**
     * Возвращает описание компонента, который обработает запрошенное
     * действие, полученное из запроса.
     *
     * @return  Kernel_Token
     */
    protected function _getFilterToken() {
        $action = Application::getRequest()->get('action');
        // пиздец, что-то с этим надо делать… хотя с другой стороны, это нигде
        // больше не должно понадобиться. оставим пока так
        if (Security_Session::is(Security_Subject::ADMIN)) {
            $name = 'logout' == $action ? 'logout' : 'default';
        } else {
            $name = 'forgot' == $action ? 'forgot' : 'login';
        }
        return new Kernel_Token($name);
    }

    /**
     * Возвращает наименование класса компонента, который обработает запрошенное
     * действие.
     *
     * @param   string  $name
     * @return  string
     */
    protected function _getFilterClassName($name) {
        return 'Backend_Action_' . ucfirst($name);
    }
}
